﻿using PHMEE.DTOS.StatusMonitor;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;

namespace PHMEE.IServices.StatusMonitor
{
    public interface IUnitStatusMonitorAppService : IApplicationService
    {

        /// <summary>
        /// 获取机组集合
        /// </summary>
        /// <param name="VesselId"></param>
        /// <returns></returns>
        Task<List<UnitStatusTabModel>> GetUnitStatusTabs(Guid VesselId);


        #region 主机机组

        /// <summary>
        /// 获取主机参数
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<UnitMainModel> GetUnitMainEngineMainParams(Guid VesselId, UnitBaseInput input);

        /// <summary>
        /// 获取主机气缸状态参数
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<UnitCylinderModel>> GetUnitMainEngineCylinderParams(Guid VesselId, UnitBaseInput input);


        /// <summary>
        /// 获取主机主轴承温度参数
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<UnitBearModel>> GetUnitMainEngineMainBearTemps(Guid VesselId, UnitBaseInput input);



        /// <summary>
        /// 获取主机增压器参数
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="OnVessel"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<UnitTurboChargerModel>> GetUnitMainEngineTurboChargerParams(Guid VesselId, bool OnVessel, UnitBaseInput input);


        /// <summary>
        /// 获取主机机组下测点集合
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<UnitPointModel>> GetUnitMainEnginePoints(Guid VesselId, UnitPointInput input);


        #endregion


        #region 主发电机机组


        /// <summary>
        /// 获取主发电机柴油机功率电流参数
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<UnitPowerCurrentModel> GetUnitMainGeneratorPowerCurrentParams(Guid VesselId, UnitBaseInput input);

        /// <summary>
        /// 获取主发电机柴油机气缸状态参数
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<UnitCylinderModel>> GetUnitMainGeneratorDieselCylinderParams(Guid VesselId, UnitBaseInput input);

        /// <summary>
        ///  获取主发电机柴油机图表状态参数
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<UnitDieselChartModel> GetUnitMainGeneratorDieselChartParams(Guid VesselId, UnitBaseInput input);

        /// <summary>
        /// 获取主发电机柴油机主要参数
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<UnitGeneratorDieselMainModel> GetUnitMainGeneratorDieselMainParams(Guid VesselId, UnitBaseInput input);

        /// <summary>
        /// 获取主发电机柴油机机机组下测点集合
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<UnitPointModel>> GetUnitMainGeneratorPoints(Guid VesselId, UnitPointInput input);


        #endregion

        #region 压载泵机组


        /// <summary>
        /// 获取压载泵机组功率电流参数
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<UnitPowerCurrentModel> GetUnitBallastPumpPowerCurrentParams(Guid VesselId, UnitBaseInput input);


        /// <summary>
        /// 获取压载泵机组参数
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<UnitBallastPumpMainModel> GetUnitBallastPumpMainParams(Guid VesselId, UnitBaseInput input);


        /// <summary>
        /// 获取压载泵机组下测点集合
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<UnitPointModel>> GetUnitBallastPumpPoints(Guid VesselId, UnitPointInput input);


        #endregion

    }
}
